import './css/index.scss';

/*!
 * @author liuyouji
 * crdate: 2014-08-04
 * update: 2014-09-25 加参数
 * update: 2014-09-26 修正BUG 页面短时无响应问题
 * update: 2014-10-18 修正BUG fn
 * update: 2016-03-04 lyj.Msg
 * update: 2017-12-14 简化
 * update: 2019-01-03 参数顺序变更
 * update: 2019-03-21 information 中文化为 信息
 * update: 2019-09-28 title computered by type
 * update: 2019-10-24 添加 UpdatePanelErrorHandler 绑定自定义的 UpdatePanel 异常处理
 * update: 2019-11-11 修改 lyj.Msg.Show 的参数为 object (字典)
 * update: 2020-04-02 alarm 对应警告
 * update: 2021-07-13 添加关闭按钮
 */

(function ($) {
	window.lyj = window.lyj || {};

	if (window.lyj.Msg != null) { /*alert('模块重复加载.');*/return; }

	function InitCfg(cfg) {
		var MIN_DELAY = 500;
		if (typeof (cfg) == 'string') {
			cfg = { msg: cfg };
		}
		cfg = $.extend({
			type: 'info',
			delay: MIN_DELAY,
			title: '',
			msg: 'message'
		}, cfg);
		if (cfg.title == '') {
			switch (cfg.type) {
				default:
				case 'info': cfg.title = '信息'; break;
				case 'prompt': cfg.title = '提示'; break;
				case 'warning': cfg.title = '警告'; break;
				case 'alarm': cfg.title = '警告'; break;
				case 'error': cfg.title = '错误'; break;
			}
		}
		if (cfg.delay == MIN_DELAY) {
			switch (cfg.type) {
				default:
				case 'info': cfg.delay = 3000; break;
				case 'prompt': cfg.delay = 4000; break;
				case 'warning': cfg.delay = 4000; break;
				case 'alarm': cfg.delay = 4000; break;
				case 'error': cfg.delay = 5000; break;
			}
		}
		cfg.type = 'l-msg-tp-' + cfg.type;
		return cfg;
	}

	window.lyj.Msg = {
		/**
		 * @description 显示提示信息
		 * @param cfg : string 信息内容 or : object { msg: '信息内容', title: '标题', type: '', delay: 4000 }
		 */
		Show: function (cfg) {
			cfg = InitCfg(cfg);
			var fnHide = function (obj) {
				obj.stop().animate({ opacity: 0, marginTop: -obj.parent().height() }, 500, 'swing', function () { obj.parent().remove(); });
			};

			if ($('.l-msg-list').length == 0) { $('body').append("<div class='l-msg-list'></div>"); }
			var x = $('.l-msg-list').append([
				"<div class='l-msg-container'><div class='l-msg'>",
				"<div class='l-msg-title'><span class='btn-close'>关闭</span><span class='txt-title'></span></div><div class='l-msg-text'></div>",
				"</div></div>"
			].join(''));
			var y = x.find('.l-msg:last');
				
			y.fadeIn(500).addClass(cfg.type);
			y.find('.l-msg-title .txt-title').text(cfg.title);
			y.find('.l-msg-title .btn-close').click(function () { fnHide($(this).closest('.l-msg')); });
			y.find('.l-msg-text').html(cfg.msg);
			if (cfg.delay > 0) {
				y.tmr = window.setInterval(function () {
					window.clearInterval(y.tmr);
					fnHide(y);
				}, cfg.delay);
			}
		},

		/**
		 * @description 显示加载层，提示用户页面状态
		 * @augments msg 加载信息
		 */
		ShowLoading: function (msg) {
			// default
			if (msg == '' || msg == null) msg = '… 正在加载数据，请稍候 …';
			// init
			if ($('.l-loading-container').length == 0) { $('body').append("<div class='l-loading-container'><div class='l-loading-mask'></div><div class='l-loading-msg'></div></div>"); }

			// show
			var me = $('.l-loading-container');
			me.find('>.l-loading-mask').height($(window).height());//.width($(window).width());

			var msgDiv = me.find('>.l-loading-msg').html(msg);
			msgDiv.css('marginTop', ($(window).height() - 30) / 2);
			me.show();
			var mt = ($(window).height() - $(msgDiv).height()) / 2 - 40;
			mt = mt > 10 ? mt : 10;
			msgDiv.css('marginTop', mt);

		},
		/**
		 * @description 隐藏加载层
		 */
		HideLoading: function () {
			$('.l-loading-container').fadeOut();//.hide();
		},
		/**
		 * @description 绑定自定义的 UpdatePanel 异常处理
		 */
		UpdatePanelErrorHandler: function () {
			if (Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) {
				var inst = Sys.WebForms.PageRequestManager.getInstance();
				if (inst) {
					inst.add_endRequest(function (sender, args) {
						//console.log(sender, args);
						var err = args.get_error();
						if (err) lyj.Msg.Show({ msg: err.message, type: 'error' });
						args.set_errorHandled(true);
					});
				}
			}
		}
	};
})(jQuery);